package com.ruoyi.fjtseac.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.xss.Xss;
import com.ruoyi.fjtseac.domain.dto.UpdateVideoForm;
import com.ruoyi.fjtseac.domain.dto.VideoDto;
import com.ruoyi.fjtseac.domain.po.Video;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zzl
 * @since 2022-07-06
 */
public interface VideoService extends IService<Video> {

    /**
     * 上传插入文章的视频
     * @param videoDto 视频对象，包含视频id、视频标题、视频文件、视频类型
     * @return
     */
    AjaxResult upload(VideoDto videoDto, String uuid);

    /**
     * 文章上传视频的接口，主要是新闻动态中的活动视频
     * @param file 文章中上传视频
     * @param uuid 前端传来的uuid作为之后从redis中获取进度的文件标识
     * @return
     */
    AjaxResult upload(MultipartFile file, String uuid);

    /**
     * 删除视频：删除服务器视频文件、删除数据库记录
     * @param id 视频id
     * @return
     */
    AjaxResult delete(Integer id);

    /**
     * 修改视频：如修改视频标题、视频类型等，不提供修改视频的功能（认为没必要）。
     * @param updateVideoForm 修改视频的表单
     * @return
     */
    AjaxResult update(UpdateVideoForm updateVideoForm);

    /**
     * 搜索视频
     * @param param 搜索关键字
     * @param pageNum 当前页码
     * @param pageSize 页面最大记录数
     * @return
     */
    AjaxResult search(@Xss(message = "不可传入脚本语言") String param, int pageNum, int pageSize);

    /**
     * 获取视频上传进度
     * @param uuid 上传视频时接收到的前端的uuid
     * @return
     */
    AjaxResult getProgress(String uuid);

}
